package com.example.task.service.impl;


import com.example.task.dao.CartDao;
import com.example.task.dao.CartItemDao;
import com.example.task.dto.CartDto;
import com.example.task.dto.CarttNumDto;
import com.example.task.entity.CartItem;
import com.example.task.service.intf.CartService;
import com.example.task.vo.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;

@Service
public class CartServiceImpl implements CartService {
    @Autowired
    private CartDao dao;
    @Autowired
    private CartItemDao itemDao;

    @Override
    public R save(CartDto dto) {
        //1.校验
        if(dto!=null && dto.getGid()>0 && dto.getNum()>0){
            //2.查询购物车详情
            CartItem item=itemDao.selectByCid(dto.getCid(),dto.getGid());
            if(item==null){
                //第一次，这次就是新增
                item=new CartItem();
                item.setCid(dto.getCid());
                item.setCtime(new Date());
                item.setGid(dto.getGid());
                item.setJoinprice(dto.getPrice());
                item.setNum(dto.getNum());
                //3.操作数据库
                itemDao.insert(item);
            }else{
                //获取本次的数量
                int num=item.getNum()+dto.getNum();
                if(num>0){
                    //4.之前加入过，这次就是更改数量
                    itemDao.updateNum(num,item.getId());
                }else {
                    return R.fail("亲,数量超出！");
                }
            }
            return R.ok();
        }
        return R.fail("请检查参数信息！");
    }

    @Override
    public R change(CarttNumDto dto) {
        //1.校验
        if(dto!=null && dto.getNum()>0 && dto.getId()>0){
            //2.更改数量
            if(itemDao.updateNum(dto.getNum(),dto.getId())>0){
                //3.返回结果
                return R.ok();
            }
        }
        return R.fail("请检查参数信息！");
    }

    @Override
    public R del(long id) {
        if(id>0){
            if(itemDao.deleteById(id)>0){
                return R.ok();
            }
        }
        return R.fail("请检查参数信息！");
    }

    @Override
    public R queryMy(long uid) {
        if(uid>0){
            return R.ok(dao.selectMy(uid));
        }
        return R.fail("请检查参数信息！");
    }
}
